public class Day06 {
    private int sum(int a,int b) {return a + b;}
//    private float sum(int a,int b) {return a + b;} // error
    public static void main(String[] args) {
        int i = 1;
        i = i++;
        System.out.println("i = " + i);
        i = ++i;
        System.out.println("i = " + i);
    }

    // 搜索插入位置
    public int searchInsert(int[] nums, int target) {
        int ret = -1;
        boolean flg = true;
        for(int i = 0; i < nums.length; i++) {
            if(nums[i] == target) {
                return i;
            }
            // 找到第一个大于 target 的
            if(flg && nums[i] > target) {
                ret = i;
                flg = false;// 锁定，不然它继续往后移动
            }
        }

        return ret == -1 ? nums.length : ret;
    }

    // 第一个错误的版本
    public int firstBadVersion(int n) {
        int left = 0;
        int right = n;
        // 不太恰当 isBadVersion 调用太多次，时间有点长
        // while(left <= right) {
        //     int mid = (right - left) / 2 + left;
        //     boolean flgLeft = isBadVersion(mid);
        //     boolean flgRight = isBadVersion(mid + 1);
        //     if(!flgLeft && flgRight) {
        //         return mid + 1;
        //     } else if(flgLeft && flgRight) {
        //         // 都是错的（太右边）
        //         right = mid - 1;
        //     } else {
        //         // 都是对的（太左边）
        //         left = mid + 1;
        //     }
        // }

        while(left < right) {
            int mid = (right - left) / 2 + left;
            if(!isBadVersion(mid)) {
                // mid 此时一定不是 所以是 +1
                left = mid + 1;
            } else {
                // mid 此时可能是 所以不减 1
                right = mid;
            }
        }

        return right;
    }

    private boolean isBadVersion(int mid) {
        return false;
    }
}
